package Gather.ListExercise;

import java.util.LinkedList;

/**
 * ClassName:LinkedListDome001
 * Package:Gather.DataStructure
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/7-15:28
 * @Version:v1.0
 */
public class LinkedListDome001 {
    /*LinkedList集合
     * 底层数据结构是双链表,查询慢,增删快,但是如果操作的是首尾元素,速度也是极快的
     * LinkedList本身多了很多直接操作首尾元素的API
     *
     * public void addFirst(E e)  在该列表开头插入指定的元素
     * public void addLase(E e)   将指定的元素追加到此列表的末尾
     * public E getFirst()        返回此列表中的第一个元素
     * public E getLast()         返回此列表中的最后的一个元素
     * public E removeFirst()     从此列表中删除并返回第一个元素
     * public E removeLast()      从此列表中删除并返回最后一个元素*/
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
    }

//    public boolean add(E e) {
//        linkLast(e);
//        return true;
//    }
//
//    void linkLast(E e) {
//        //参数e：表示现在要添加的元素
//        final LinkedList.Node<E> l = last;
//        final LinkedList.Node<E> newNode = new LinkedList.Node<>(l, e, null);
//        last = newNode;
//        if (l == null)
//            first = newNode;
//        else
//            l.next = newNode;
//        size++;
//        modCount++;
//    }
//
//    //列表中的结点
//    private static class Node<E> {
//        E item;//表示现在要存储的数据
//        LinkedList.Node<E> next;//表示记录下一结点的地址值
//        LinkedList.Node<E> prev;//表示记录前一个结点的地址值
//
//        Node(LinkedList.Node<E> prev, E element, LinkedList.Node<E> next) {
//            this.item = element;
//            this.next = next;
//            this.prev = prev;
//        }
//    }


}
